/*
 * Copyright (c)  2008 Sebastien Tremblay
 *
 * id3-tag-builder - threads.StatusUpdateListener.java
 *
 * All source and documentation is copyrighted by Sebastien Tremblay
 * (seb at ryders dot net) and made available under the Apache License 2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * $Id: StatusUpdateListener.java 30 2010-01-08 04:01:06Z ryders $
 */
package com.empireone.id3tagbuilder.threads;

/**
 * The <code>StatusUpdateLister</code> interface defines the level of feedback
 * the application will provide to the user interface (gui, cmd, etc.)
 *
 * @author Sebastien Tremblay
 */
public interface StatusUpdateListener {

    /**
     *
     * @param value
     */
    public void updateWorkload(int value);
    /**
     *
     * @param value
     */
    public void updateProgress(int value);
    
    /**
     *
     */
    public enum MsgType {

	/**
	 *
	 */
	STARTED,            // work is starting, creating the various threads and jobs
	/**
	 *
	 */
	SCHEDULED,          // all jobs are scheduled and ready to go
	/**
	 *
	 */
	COMPLETED,          // work done, all jobs processed.
	/**
	 *
	 */
	HALTED,             // work halted, some jobs were not processed.

	/**
	 *
	 */
	JOB_CREATED,        // album job was created
	/**
	 *
	 */
	JOB_STARTED,        // album job was picked up by thread and is starting
	/**
	 *
	 */
	JOB_COMPLETED,      // album has been processed
	/**
	 *
	 */
	JOB_HALTED,         // thread has received a halt request, album process incomplete

	/**
	 *
	 */
	PROGRESS,           // individual track has been processed in some album, by some thread

	/**
	 *
	 */
	ERROR,
	/**
	 *
	 */
	WARNING,
	/**
	 *
	 */
	DEBUG,
	/**
	 *
	 */
	ERROR_UNSUPPORTED,
	/**
	 *
	 */
	ERROR_DATA
    }

    /**
     *
     * @param type
     */
    public void status(MsgType type);

    /**
     *
     * @param type
     * @param str
     */
    public void status(MsgType type, String str);
}
